"""
日志工具
创建时间：2025-09-12
作者：开发团队
目的：提供统一的日志记录功能
"""

import logging
import os
from logging.handlers import RotatingFileHandler
from ..core.config import get_config

# 获取配置
config = get_config()

# 创建日志目录
LOG_DIR = "logs"
if not os.path.exists(LOG_DIR):
    os.makedirs(LOG_DIR)

# 配置根日志记录器
logging.basicConfig(
    level=getattr(logging, config.LOG_LEVEL.upper()),
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        RotatingFileHandler(
            os.path.join(LOG_DIR, "app.log"),
            maxBytes=10*1024*1024,  # 10MB
            backupCount=5
        ),
        logging.StreamHandler()
    ]
)


def get_logger(name: str) -> logging.Logger:
    """
    获取日志记录器
    :param name: 日志记录器名称
    :return: 日志记录器实例
    """
    logger = logging.getLogger(name)
    logger.setLevel(getattr(logging, config.LOG_LEVEL.upper()))
    return logger


def log_request_info(logger: logging.Logger, request_info: dict[str, object]) -> None:
    """
    记录请求信息
    :param logger: 日志记录器
    :param request_info: 请求信息字典
    """
    logger.info(f"Request: {request_info}")


def log_response_info(logger: logging.Logger, response_info: dict[str, object]) -> None:
    """
    记录响应信息
    :param logger: 日志记录器
    :param response_info: 响应信息字典
    """
    logger.info(f"Response: {response_info}")


def log_error(logger: logging.Logger, error: Exception, extra_info: dict[str, object] | None = None) -> None:
    """
    记录错误信息
    :param logger: 日志记录器
    :param error: 异常对象
    :param extra_info: 额外信息
    """
    error_msg = f"Error: {str(error)}"
    if extra_info:
        error_msg += f", Extra Info: {extra_info}"
    logger.error(error_msg, exc_info=True)